//
//  CYUtils.h
//  T-BoxManager
//  工具类
//  Created by 车音 on 2019/6/24.
//  Copyright © 2019 CheYin. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface CYUtils : NSObject

+ (BOOL)isNullOrNil:(id)data;

+ (BOOL)isEmptyString:(NSString *)string;

/**
 获取非空字符串
 */
+ (NSString *)getExistString:(NSString *)text;


+ (BOOL)isEqualsString:(NSString *)str1 to:(NSString *)str2;

+ (void)log:(NSString*)format, ...;

+ (BOOL)hasChinese:(NSString *)str;

+ (BOOL)isJPEGValid:(NSData *)jpeg;

+ (NSString *)randomString:(NSInteger)count;

/**
 获取随机数
 @param count 随机数长度
 @return 随机数
 */
+ (NSString *)random:(NSInteger)count;

+(NSString*)stringToMD5:(NSString *)str;

+(NSString*)stringToSHA1:(NSString *)str;

+ (NSString *)urlEncode:(NSString *)urlString;

+ (NSString *)timestamp;

+ (NSString *)timestampMillisecond;

+ (NSString *)urlDecode:(NSString *)urlString;

+ (NSString *)systemName;

+ (NSString *)systemVersion;

+ (NSString *)systemString;

+ (NSString *)appBundleId;

+ (NSString *)appName;

+ (NSString *)appVersion;

+ (NSString *)appBuildCode;

+ (CGFloat)statusBarHeight;


// 当前日期字符串, 'yyyy-MM-dd HH:mm:ss'
+ (NSString *)currentDateStr;
+ (NSString *)formatDate:(NSDate *)date format:(NSString *)format;
// 格式化当前日期为字符串
+ (NSString *)currentDateStr:(NSString *)format;
//字符串与Object互转
+ (id)strigASCIIEncoding:(NSString *)string;
+ (id)string2object:(id)src;
+ (NSString *)object2string:(id)object;
+ (id)data2object:(NSData *)data;

//'yyyy-MM-dd' - 转日期格式（NSDate）
+ (NSDate *)dateFromString:(NSString *)yyyy_MM_dd;
// 2016-02-16T09:19:49+00:00
+ (NSDate *)dateFromString2:(NSString *)yyyy_MM_ddTHH_mm_ss;
//2016-03-30T00:00:00.000Z
+ (NSDate *)dateFromString3:(NSString *)yyyy_MM_ddTHH_mm_ss_SSSZ;
//2016-08-30T04:07:00Z
+ (NSDate *)dateFromString4:(NSString *)yyyy_MM_ddTHH_mm_ssZ;
//2016-08-30 16:34:49
+ (NSDate *)dateFromString5:(NSString *)yyyy_MM_dd_HH_mm_ss;

+ (NSDate *)dateFromString:(NSString *)dateString format:(NSString *)format;

/**
 时间戳转换为时间

 @param timeString 时间戳字符串
 @param formatterString 时间格式 yyyy-MM-dd
 @return 时间字符串
 */
+ (NSString *)getTimeFromTimestamp:(NSString *)timeString formatter:(NSString *)formatterString;

///< 倒计时计算
+ (NSString *)loadActivityStartTimer:(NSString *)creat_time;

//秒转化为时间格式字符串
+ (NSString *)timeFromSecond:(double)second;
+ (NSString *)timeFromMillsecond2:(long long)millsecond;

///< 截取字符串后三位
+ (NSString *)removeLastOneChar:(NSString *)origin;

///< 是否为Ipad
+ (BOOL)getIsIpad;
///< 是否为第一次安装
+ (BOOL)isFirstBoot;
///< 手机号码验证
+ (BOOL)effectiveNumber:(NSString *)mobile;
///< 是否安装百度地图
+ (BOOL)isInstallBaiduMap;
///< 是否安装高德地图
+ (BOOL)isInstallIosAMap;
///< 是否安装谷歌地图
+ (BOOL)isInstallComgooglemaps;
///< 是否安装腾讯地图
+ (BOOL)isInstallQQMap;
///< 苹果自带地图
+ (BOOL)isInstallIphoneMap;

+ (BOOL)isLengthToEleven:(NSString *)mobile;

/**
 是否是正确身份证号码
 */
+ (BOOL)isCorrectIDCard:(NSString *)IDCardStr;

/**
 是否是正确邮箱号码
 */
+ (BOOL)isCorrectEmail:(NSString *)EmailStr;

/**
 验证密码的难度等级
 */
+ (NSString *)verifyPasswordGradeWithPwd:(NSString *)password;

/**
 获得字体高度方法
 */
+ (CGFloat)getFontHeightUseString:(NSString *)textStr Width:(CGFloat)width FontSize:(CGFloat)fontSize;

/**
 获得带行间距字体高度方法
 */
+ (CGFloat)getFontHeightUseString:(NSString *)textStr Width:(CGFloat)width FontSize:(CGFloat)fontSize Distance:(CGFloat)textDistance;

/**
 获取带行间距的属性字符串
 */
+(NSAttributedString *)getAttributedStringWithString:(NSString *)string lineSpace:(CGFloat)lineSpace withAlignment:(NSTextAlignment)alignment;

/**
 打电话功能
 @param phoneStr 手机号码
 */
+ (void)callPhoneUseNumber:(NSString *)phoneStr;

/**
 获取Window当前显示的ViewController
 */
+ (UIViewController*)currentViewController;

/**
 处理开始时间标准化显示
 */
+ (NSString *)getDefaultStartTimeWithHours:(NSString *)hours andMinute:(NSString *)minute;

/**
 跳转系统通知页面
 */
+(void)enterSystemSettingNotity;

/**
 跳转手机密码页面
 */
+(void)enterSystemPasscodeSetting;

/**
 过滤器/ 将.2f格式化的字符串，去除末尾0
 @param numberStr 需要格式化的字符串
 @return 去除末尾0之后的
 */
+ (NSString *)removeSuffix:(NSString *)numberStr;


/// 过滤器/ 将.2f格式化的字符串，去除末尾0(不进位)
/// @param numberStr 需要格式化的字符串
+ (NSString *)removeSuffixNOCarry:(NSString *)numberStr;


/**
 对字符串进行保留两位,后面的舍去(不四舍五入,不丢失经度),如果是0也要舍去
 */
+ (NSString *)removeSuffixWithString:(NSString *)string;


/**
 计算时间差值
 @param starTime 开始时间
 @param endTime 结束时间
 @return 差值 秒
 */
+ (NSInteger)differenceInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime;

/**
 通过功能名称+vin生成一个存储时间的key值
 @param actionName 控车功能名称
 @return key值
 */
+(NSString *)getControlTimeKeyWithActionName:(NSString *)actionName vinStr:(NSString *)vinStr;

/**
 判断是否有定位权限
 */
+ (BOOL)getUserLocationAuth;

/**
 取html字符串中的img
 */
+ (NSArray *)filterImageWithHtml:(NSString *)html;

/**
 获取PHP接口的签名
 */
+(NSString *)getHomeWebSignature;

/**
 获取设备型号然后手动转化为对应名称
 */
+ (NSString *)getDeviceName;

/**
 比较两个版本号的大小
 
 @param v1 第一个版本号
 @param v2 第二个版本号
 @return 版本号相等,返回NO; v1小于v2,返回YES; 否则返回NO.
 */
+ (BOOL)compareVersion:(NSString *)v1 to:(NSString *)v2 ;

/// 判断手机型号是否为6s以后机型
+ (BOOL)iphoneType;


/// 两个颜色平滑渐变---根据系数返回对应颜色
/// @param beginColor 开始颜色
/// @param endColor 结束颜色
/// @param scal 系数
+ (UIColor *)getColorWithBeginColor:(UIColor *)beginColor toEndColor:(UIColor *)endColor withScal:(CGFloat)scal;

/**
 字符串截取保留小数点后两位
 */
+ (NSString *)getRoundFloat:(double)floatNumber;


/**
 获取具体的ip（ipv4）地址
 */
+ (NSString *)getIPAddress;

/**
 获取手机运营商
 */
+(NSString *)getSIMOperator;

/**
 获取不需要任何提示的接口名称,如果该接口调用时需要对用户无感,不需要任何提示,那么要把接口添加到这个数组里面
 返回值为YES就是需要弹窗的
 */
+ (BOOL )getNeedTipApis:(NSString *)urlStr;

/// 将服务器返回Jason中null或者<null>处理为@""
/// @param obj 服务器返回Jason
+ (id) processDictionaryIsNSNull:(id)obj;


/// 读取本地json数据
/// @param fileName 文件名称
+(id)getLocationData:(NSString *)fileName;


/// 获取N个月前的年和月
/// @param number N个月前
+(NSDictionary *)getNumberYearAndMonth:(NSInteger)number;

//保留两位
+ (NSString *)floatStr:(NSString *)string;

//电量处理
+ (NSString *)handleElectricity:(NSString *)string;

/// 根据字符串获取对应参数
/// @param filterArray 原字符串根据某个字符串分割成的数组
/// @param containStr 过滤出对应的字符串
/// return 根据 （过滤出对应的字符串）得出value
/// 例如mallColumn&title=香水专区&subType=1&thirdId=167 根据 & 分割之后 得出的数组即为 filterArray containStr即为 title=  得出 香水专区
+ (NSString *)filterUsingPredicateArray:(NSArray *)filterArray
                           andContainer:(NSString *)containStr;
@end
